# encoding=utf-8
from LBT.BaseParent.BaseLbt import lbtlogin
from LBT.Resource.SmsAtt import SmsAtt
from LBT.GeneralOperation.SmsOperation import smsoperation


class TeacherSend(lbtlogin, SmsAtt):
    '''教职工发送短信模块的所有用例
    1、检测页面是否加载完全，所有控件是否都存在及合理
    2、短信发送模块发送指定验证短信“我是验证教职工发送的短信”
    然后通过校验登录用户姓名+短信内容+日期（今天），进行查询，校验。
    3、时间框要选择未来的一个时间段，下一个月的时间，进行查询。查询结果应该为空
    4、验证收藏按钮，需要去短信发送模块，验证收藏是否成功。
    '''

    @lbtlogin.loginFun
    def test_checkteachersendInterface(self):
        '''
        检查老师发送短信页面，是否加载正确。
        作者：duvee
        时间：20190403
        :return:
        '''
        self.docstr ='检查老师发送短信页面，是否加载正确。'
        dr = self.driver
        self.moduleOp.openMoudleAndIn(self.smsNavigation_class, self.sms_module_teachersend_url)
        self.assertTrue(dr.find_element_by_link_text(self.sms_teachersend_title_text).is_displayed(), "title未加载")
        self.assertTrue(dr.find_element_by_class_name(self.sms_teachersend_chosen_class).is_displayed(), "选择教职工框未加载")
        self.assertTrue(dr.find_element_by_id(self.sms_teachersend_keyword_id).is_displayed(), "短信关键字未加载")
        self.assertTrue(dr.find_element_by_id(self.sms_teachersend_time_id).is_displayed(), "时间选择框未加载")
        self.assertTrue(dr.find_element_by_css_selector(self.sms_teachersend_selectbtn_css).is_displayed(), "查询按钮未加载")
        self.assertTrue(dr.find_element_by_css_selector(self.sms_teachersend_prev_css).is_displayed(), "上一页未加载")
        self.assertTrue(dr.find_element_by_class_name(self.sms_teachersend_paperSize_class).is_displayed(), "页面数量选择未加载")

    @lbtlogin.loginFun
    def test_checkQuery(self):
        """
        短信发送模块发送指定验证短信“我是验证教职工发送的短信”
        然后通过校验短信内容+日期（今天），进行查询，校验。
        :return:
        """
        self.docstr = '短信发送模块发送指定验证短信“我是验证教职工发送的短信”'
        dr = self.driver
        # 初始化短信操作业务模块
        smsoper = smsoperation(dr)
        # 调用向学生发送定时短信，返回学生姓名和短信内容
        smsoper.studentSendSms(self, False)
        # 重写发送短信内容
        sendText = self.clearAndSendKeyForText(dr.find_element_by_id(self.sms_content_id),
                                               smsoper.writeContent("", "老师发送的时间为："))
        # 发短信按钮
        self.driver.find_element_by_id(self.sms_btn_submit).click()
        dr.switch_to.default_content()
        # 获取当前登录人姓名
        name = dr.find_element_by_class_name(self.FirstPage_name_class_name).text
        # 进入老师发送的模块
        self.moduleOp.openMoudleAndIn(self.smsNavigation_class, self.sms_module_teachersend_url)
        smsoper.tacherSendQuery(name, sendText, None)
        results = dr.find_elements_by_xpath(self.sms_teachersend_queryresults_xpath)
        firsttext = results[0].find_element_by_xpath(
            self.sms_teachersend_firstresulttext_xpath).text
        self.assertTrue(results.__len__() == 1 and firsttext == sendText)
    @lbtlogin.loginFun
    def test_queryfuture(self):
        """
        时间框要选择未来的一个时间段，下一个月的时间，进行查询。查询结果应该为空
        :return:
        """
        self.docstr ='时间框要选择未来的一个时间段，下一个月的时间，进行查询。查询结果应该为空'
        dr = self.driver
        # 初始化短信操作业务模块
        smsoper = smsoperation(dr)
        # 进入老师发送的模块
        self.moduleOp.openMoudleAndIn(self.smsNavigation_class, self.sms_module_teachersend_url)
        smsoper.tacherSendQuery("","","future")
        results = dr.find_elements_by_xpath(self.sms_teachersend_queryresults_xpath)
        self.assertTrue(results.__len__()==0)
    @lbtlogin.loginFun
    def test_collection(self):
        """
        验证收藏按钮，需要去短信发送模块，验证收藏是否成功。
        :return: 
        """
        self.docstr ='验证收藏是否成功'
        dr = self.driver
        # 初始化短信操作业务模块
        smsoper = smsoperation(dr)
        # 调用向学生发送定时短信，返回学生姓名和短信内容
        smsoper.studentSendSms(self, False)
        # 重写发送短信内容
        sendText = self.clearAndSendKeyForText(dr.find_element_by_id(self.sms_content_id),
                                               smsoper.writeContent("", "老师发送的时间为："))
        # 发短信按钮
        self.driver.find_element_by_id(self.sms_btn_submit).click()
        dr.switch_to.default_content()
        # 进入老师发送的模块
        self.moduleOp.openMoudleAndIn(self.smsNavigation_class, self.sms_module_teachersend_url)
        smsoper.tacherSendQuery("", sendText, None)
        results = dr.find_elements_by_xpath(self.sms_teachersend_queryresults_xpath)
        self.assertTrue(results.__len__() == 1)
        results[0].find_element_by_xpath(self.sms_teachersend_firstresultbtn_xpath).click()
        #重新切换到发送短信页面
        dr.switch_to.default_content()
        #关闭所有之前的模块，重新打开
        self.moduleOp.close_modules()
        self.moduleOp.openMoudleAndIn(self.smsNavigation_class, self.smsModule_url)
        #在短信收藏里面，默认是我的收藏，里面找最新的第一个，就是刚才收藏的那个了
        dr.find_element_by_css_selector(self.sms_smsTemplate_class).click()
        dr.switch_to.frame(dr.find_element_by_xpath(self.sms_smsTemplate_frame_xpath))
        text=dr.find_elements_by_xpath(self.sms_smsTemplate_my_smscontents_xpath)[0].text
        self.assertTrue(text==sendText)
